#!/bin/bash
# Prüfen, ob das Verzeichnis .ssh existiert
if [ ! -d "~/.ssh" ]; then
    mkdir ~/.ssh
    echo ".ssh-Verzeichnis erstellt"
fi

echo "Gebe den Namen des ssh-Schlüssels ein, gefolgt von [ENTER]:"
read key
echo "Gebe die Passphrase ein, gefolgt von [ENTER]:"
read -s pass

echo "Hinzufügen zu ssh-agent"
# Der echo-Teil ermöglicht die Übergabe mehrerer Variablen in einem prompt-basiertes Skript
echo -e "\n\n\n" | ssh-keygen -t rsa -b 4096 -C "$email" -N "$pass" -f ~/.ssh/$key
ssh-add ~/.ssh/$key
echo "Zum ssh-agent hinzugefügt"
echo "Wenn Du öffentlichen Schlüssel auf den Server hochladen möchtest, gebe die IP vom Server unten an:"
read remote
if [[ $remote ]]; then
    echo "Server-Benutzername"
    read user
    cat ~/.ssh/$key.pub | ssh $user@$remote 'mkdir ~/.ssh;cat >> ~/.ssh/authorized_keys'
    echo "Schlüssel zum Server hinzugefügt"
    echo "SSH-Schlüssel testen"
    testSsh=$(ssh -o BatchMode=yes -o ConnectTimeout=5 $user@$remote echo success 2>&1)
    if [[ $testSsh == success ]] ; then
      echo Erfolgreich den öffentlich SSH-Schlüssel zum Server hinzugefügt!!
    elif [[ $testSsh == "Berechtigung verweigert"* ]] ; then
      echo fehlende Berechtigung
    else
      echo unbekannter Fehler
    fi
else
    echo "Öffentlichen SSH-Schlüssel nicht zum Server hinzugefügt"
    exit 1
fi